package com.powerbank.common.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 设备主表实体类
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("device")
public class Device {

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 设备编码
     */
    @TableField("device_code")
    private String deviceCode;

    /**
     * 设备名称
     */
    @TableField("device_name")
    private String deviceName;

    /**
     * 点位ID
     */
    @TableField("location_id")
    private Long locationId;

    /**
     * 设备型号
     */
    @TableField("device_model")
    private String deviceModel;

    /**
     * 生产厂商
     */
    @TableField("manufacturer")
    private String manufacturer;

    /**
     * 总插槽数
     */
    @TableField("total_slots")
    private Integer totalSlots;

    /**
     * 可用插槽数
     */
    @TableField("available_slots")
    private Integer availableSlots;

    /**
     * 已占用插槽数
     */
    @TableField("occupied_slots")
    private Integer occupiedSlots;

    /**
     * 维护中插槽数
     */
    @TableField("maintenance_slots")
    private Integer maintenanceSlots;

    /**
     * 网络类型：WIFI,4G,5G
     */
    @TableField("network_type")
    private String networkType;

    /**
     * 固件版本
     */
    @TableField("firmware_version")
    private String firmwareVersion;

    /**
     * 最后心跳时间
     */
    @TableField("last_heartbeat")
    private LocalDateTime lastHeartbeat;

    /**
     * 在线状态：0-离线，1-在线
     */
    @TableField("online_status")
    private Integer onlineStatus;

    /**
     * 设备状态：0-停用，1-正常，2-故障，3-维护中
     */
    @TableField("device_status")
    private Integer deviceStatus;

    /**
     * 安装日期
     */
    @TableField("install_date")
    private LocalDate installDate;

    /**
     * 保修到期日期
     */
    @TableField("warranty_date")
    private LocalDate warrantyDate;

    /**
     * 设备二维码
     */
    @TableField("qr_code")
    private String qrCode;

    /**
     * 创建时间
     */
    @TableField(value = "created_time", fill = FieldFill.INSERT)
    private LocalDateTime createdTime;

    /**
     * 更新时间
     */
    @TableField(value = "updated_time", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updatedTime;

    /**
     * 是否删除：0-否，1-是
     */
    @TableLogic
    @TableField("deleted")
    private Integer deleted;
}